/**
 * (C)2012 Exlu Corporation. All rights reserved.
 * 注意事項   :
 */
package cn.exlu.wea.io.directory;

import java.io.File;

/**
 * 对目录的操作
 * 注：目录含义是指操作系统（OS）中文件夹。
 * @author Mark
 * @version 1.0.1.1
 * @CreateTime 2013-1-21
 */
public abstract class DirectoryManager {

    /**
     * 添加目录
     * @param fileFullPath 目录完整路径
     * @return 成功：true 失败：false
     */
    public abstract boolean addDirectory(String fileFullPath);
    
    /**
     * 删除目录
     * @param fileFullPath 目录完整路径
     * @return 成功：true 失败：false
     */
    public boolean deleteDirectory(String fileFullPath){
        File file=new File(fileFullPath);
       return deleteFile(file);
    }
 
    /**
     * 复制目录
     * @param srcFileFullPath 源目录完整路径
     * @param desFileFullPath 目的目录完整路径
     * @return 成功：true 失败：false
     */
    public abstract boolean copyDirectory(String srcFileFullPath,String desFileFullPath);
 
    /**
     * 移动文件
     * @param srcFileFullPath 源目录完整路径
     * @param desFileFullPath 目的目录完整路径
     * @return 成功：true 失败：false
     */
    public boolean cutDirectory(String srcFileFullPath,String desFileFullPath){
        File srcFile=new File(srcFileFullPath);
        File desFile=new File(desFileFullPath);
        return srcFile.renameTo(desFile);
    }
    
    /**
     * 删除一个目录
     * @param file 目录一个File实例
     * @return 成功：true 失败：false
     */
    private boolean deleteFile(File file){
        if(file.isDirectory()){
            File[] filesInDirectory=file.listFiles();
            for(File fileInDct:filesInDirectory){
                boolean success=deleteFile(fileInDct);
                if(!success){
                    return false;
                }
            }
        }
        return file.delete();
    }
    
    
    /**
     * 目录判断。
     * @param file 文件
     * @return 若是：true 否：false
     */
    public static boolean isDirecotry(File file){
        if(file==null){
            return false;
        }
        if(file.exists()&&file.isDirectory()){
            return true;
        }
        return false;
    }

}
